
#ifndef __PRO_SYS_H__
#define __PRO_SYS_H__	

#include "includes.h"
																    
//#define BITBAND(addr, bitnum) (( addr & 0xF0000000) + 0x2000000 + ( (addr & 0xFFFFF) << 5) + (bitnum << 2) ) 
//#define MEM_ADDR(addr)  *( (volatile unsigned long  *)(addr) ) 
//#define BIT_ADDR(addr, bitnum)   MEM_ADDR(BITBAND(addr, bitnum) ) 

//#define GPIOA_ODR_Addr    	(GPIOA_BASE + 12)  
//#define GPIOB_ODR_Addr    	(GPIOB_BASE + 12)  
//#define GPIOC_ODR_Addr    	(GPIOC_BASE + 12)  
//#define GPIOD_ODR_Addr    	(GPIOD_BASE + 12)  
//#define GPIOE_ODR_Addr    	(GPIOE_BASE + 12)  
//#define GPIOF_ODR_Addr    	(GPIOF_BASE + 12)     
//#define GPIOG_ODR_Addr    	(GPIOG_BASE + 12)     
//	
//#define GPIOA_IDR_Addr    	(GPIOA_BASE + 8) 	
//#define GPIOB_IDR_Addr    	(GPIOB_BASE + 8) 	
//#define GPIOC_IDR_Addr    	(GPIOC_BASE + 8) 	
//#define GPIOD_IDR_Addr    	(GPIOD_BASE + 8) 	
//#define GPIOE_IDR_Addr    	(GPIOE_BASE + 8) 	
//#define GPIOF_IDR_Addr    	(GPIOF_BASE + 8) 	
//#define GPIOG_IDR_Addr    	(GPIOG_BASE + 8) 	
// 

//#define PAout(n)   			BIT_ADDR(GPIOA_ODR_Addr,n)  
//#define PAin(n)    			BIT_ADDR(GPIOA_IDR_Addr,n)  
//			
//#define PBout(n)   			BIT_ADDR(GPIOB_ODR_Addr,n)  
//#define PBin(n)    			BIT_ADDR(GPIOB_IDR_Addr,n)  
//			
//#define PCout(n)   			BIT_ADDR(GPIOC_ODR_Addr,n)  
//#define PCin(n)    			BIT_ADDR(GPIOC_IDR_Addr,n)  
//			
//#define PDout(n)   			BIT_ADDR(GPIOD_ODR_Addr,n)  
//#define PDin(n)    			BIT_ADDR(GPIOD_IDR_Addr,n)  
//			
//#define PEout(n)   			BIT_ADDR(GPIOE_ODR_Addr,n)  
//#define PEin(n)    			BIT_ADDR(GPIOE_IDR_Addr,n)  
//			
//#define PFout(n)   			BIT_ADDR(GPIOF_ODR_Addr,n)  
//#define PFin(n)    			BIT_ADDR(GPIOF_IDR_Addr,n)  
//			
//#define PGout(n)   			BIT_ADDR(GPIOG_ODR_Addr,n)  
//#define PGin(n)    			BIT_ADDR(GPIOG_IDR_Addr,n)  

void pro_sys_init(void);
void pro_sys_int_enter(void);
void pro_sys_int_exit(void);

#endif
